module function_demo();

// 在 module 中, function 默认是 static 的
// 未显式声明 automatic 时，所有局部变量均为静态变量
function void static_counter();
    int i;
    i = i + 1;
    $display("static_counter: %0d", i);
endfunction

function int add(input int a, input int b);
    return a + b;
endfunction

initial begin
    begin
        for (int i = 0; i < 3; i++) begin
            static_counter();
        end
    end
    begin
        int a = 1;
        int b = 2;
        $display("add: %0d", add(a, b));
    end
end

// SystemVerilog 中 function 是纯计算性的，在零仿真时间内完成，并且返回一个值。

endmodule
